Computer systems generally include one or more processors interfaced to a temporary data-storage device such as a memory device and one or more persistent data-storage devices such as disk drives. Each disk drive generally has an associated disk controller. Data is transferred from the disk drives to the disk controller and is then transferred to the memory device over a communications bus or similar.
From time to time certain tasks are required to be performed by such computer systems. These tasks can be either user specified or system generated. Many such tasks can be accomplished by using one of several combinations of resources. Some sets of resources are provided by a single resource provider. In some computer systems there are multiple resource providers, each resource provider providing two or more resources.
One example of a resource provider is a persistent data-storage device such as a disk drive. The disk drive provides both physical storage space and disk head time. Both physical storage space and disk head time are examples of resources provided by the resource provider. When making an allocation from a disk, that disk provides not only the physical space but also the time needed by the application from the disk's head to access its data.
It is a difficult task to provide resources such as disk space and disk head time from multiple different resource providers in a way that ensures optimal allocation of the resources.